1. Field of the Invention
The present invention relates to an arrangement for testing network-based systems by emulating network workstations having respective Internet Protocol (IP) addresses.
2. Description of the Related Art
Protocol emulators are often programmed in a UNIX environment for testing network devices that are designed to implement a prescribed protocol. Often there is a need to emulate multiple IP devices having respective IP addresses. Typically such emulation of multiple IP devices is accomplished by creating logical IP addresses, also referred to as alias IP addresses or secondary IP addresses, and binding each of the logical IP addresses to a socket using BSD (Berkeley Software Distribution) socket programming. In particular, different types of sockets may be created: stream sockets are used for character streams (TCP) for use by HTTP or FTP; and datagram sockets are used for (UDP) datagrams. Other types of sockets exist, for example raw sockets. Once the socket is created, the bind function is used to bind the socket to the corresponding logical IP address, enabling a UNIX kernel to provide Ethernet access to the logical IP address. Hence, a UNIX workstation can emulate multiple devices by binding multiple logical IP addresses to respective sockets for access to the UNIX kernel.
The above-described emulation approach, however, does not scale well for multiple logical IP addresses. In particular, each logical IP address takes up kernel resources because each corresponding socket requires a file descriptor. A typical UNIX kernel is unusable with more than several thousand file descriptors, hence the UNIX kernel cannot handle more than 1000 to 2000 logical IP addresses. Although more IP addresses can be handled by specialized kernel code provided by test vendors, such specialized kernel code is based on proprietary source code in conjunction with specialized test hardware from the test vendor. Since test vendors prefer not to provide the source code for the specialized kernel code, test engineers may have difficulty in modifying the kernel code for their own particular testing requirements. Hence, test engineers would need several months to modify the kernel code in order to perform the necessary test operations. Consequently, test engineers need to choose between testing systems under test by using only a limited number of IP addresses, and substantial delay of the systems under test.